www.gusucode.com > 通用 ThunkC++源码程序 > 通用 Thunk/GenericThunk_source_sample/GenericThunk_source/GenericThunk_source/src/Thunk/ThisToStd.cpp
#include <Thunk/ThisToStd.h> #define THUNK_MACHINE_CODE_IMPLEMENT #include <Thunk/MachineCodeMacro.h> namespace Thunk { dword_ptr ThisToStd::GetObject() const { return m_this; } void ThisToStd::SetObject(dword_ptr newObj) { m_this = newObj; Helper::FlushInstructionCache(&m_this,sizeof(m_this)); } dword ThisToStd::GetMethod() const { return Helper::GetTransferDST(&JMP); } void ThisToStd::SetMethod(dword newMethod) { Helper::SetTransferDST(&JMP,newMethod); Helper::FlushInstructionCache(&m_method,sizeof(m_method)); } ThisToStd::~ThisToStd() {} ThisToStd::ThisToStd(dword_ptr Obj,dword method) THIS_TO_STD_CODES() { SetObject(Obj); SetMethod(method); } ThisToStd::ThisToStd(const ThisToStd &src) THIS_TO_STD_CODES() { *this = src; } ThisToStd& ThisToStd::operator = (const ThisToStd &rhs) { SetObject( rhs.GetObject() ); SetMethod( rhs.GetMethod() ); return *this; } bool ThisToStd::operator == (const ThisToStd &rhs) const { return ( GetObject()==rhs.GetObject() && GetMethod()==rhs.GetMethod() ); } bool ThisToStd::operator != (const ThisToStd &rhs) const { return !(*this==rhs); } dword_ptr ThisToStd::Attach(dword_ptr newObj) { dword_ptr oldObj = GetObject(); SetObject(newObj); return oldObj; } dword ThisToStd::Attach(dword newMethod) { dword oldMethod = GetMethod(); SetMethod(newMethod); return oldMethod; } }